/**
 * utils/errorHandler.js
 * 提供统一的错误格式化工具。
 */

/**
 * 根据 axios / 网络错误构建错误描述
 * @param {Error} error
 * @param {string} serviceName 例如 'Coze' 或 'Database'
 * @returns {string}
 */
function buildApiErrorMessage(error, serviceName = 'API') {
  if (!error) return `${serviceName} 未知错误`;

  // 网络层错误
  if (error.code === 'ENOTFOUND') return `${serviceName} 网络连接失败`;
  if (error.code === 'ECONNABORTED') return `${serviceName} 请求超时`;

  // 响应级别错误
  if (error.response) {
    const { status, statusText, data } = error.response;
    let message = `${serviceName} API 错误 ${status}: ${statusText}`;
    if (data?.msg) message += ` (${data.msg})`;
    if (status === 401) message = `${serviceName} API 认证失败`;
    if (status === 403) message = `${serviceName} 权限不足`;
    if (status === 404) message = `${serviceName} 资源不存在`;
    if (status === 429) message = `${serviceName} 调用频率过高`;
    if (status >= 500) message = `${serviceName} 服务器内部错误`;
    return message;
  }

  // 其他通用错误
  return error.message || `${serviceName} 未知错误`;
}

module.exports = {
  buildApiErrorMessage
};
